export let fragmentShaderSource = `
    precision mediump float;
    varying vec3 v_norm;
    // 光照方向
    varying vec3 v_surfaceToCamera;
    varying vec3 v_surfaceToLight;
    uniform vec3 u_lightDirection;
    uniform float u_shininess;
    uniform float u_limit;
    uniform float u_innerLimit;
    uniform float u_outterLimit;
    
    void main(){
      vec3 normal = normalize(v_norm);
      // 中间方向的向量
      vec3 halfVector = normalize(v_surfaceToCamera + v_surfaceToLight);
      vec3 surfaceToLight = normalize(v_surfaceToLight);
      // 光照方向
      vec3 lightDir = normalize(u_lightDirection);
      // 是光照的负方向
      float specular = 0.0;
      // 垂直的话是1 ，如果有便宜 就会比1小
      float dotFromDirection = dot(surfaceToLight, -lightDir);
      float limitRange = u_innerLimit - u_outterLimit;
      float light = clamp((dotFromDirection - u_outterLimit)/limitRange, 0.0, 1.0);
      if(light > 0.0){
        specular = pow(dot(normal, halfVector), u_shininess);
      }
      gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
      // [0,1,0] * 0.4 -> [0,0.4,0]
      // clamp(100, 0, 1) -> 1 夹住函数 像一个夹子一样 夹在一个范围
      gl_FragColor.rgb *= light; 
      // 高亮
      gl_FragColor.rgb += specular; 
      // 上面的高亮强度太大，我们采用下面的数学默写计算方法， 这样高亮比较集中
      // gl_FragColor.rgb += pow(specular, 10.0); 
    }
`
